﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Inventario_HardSoft.ADO;

namespace Inventario_HardSoft.Controlador
{
    class Ctrl_Reg_Equipo
    {
        ConexionDataContext conexion;

        public Ctrl_Reg_Equipo()
        {
            conexion = new ConexionDataContext();
        }
        
        internal DialogResult regEquipo(ADO.Equipo eq)
        {
            DialogResult result = DialogResult.Cancel;
            if (!this.verificar_Serie(eq.serie))
            {
                try
                {
                    int ideq = Convert.ToInt32(conexion.INVENTARIO_CONTADOR.Single(x => x.IDENTIFICADOR == "HARDSOFT").CONT_IDEQUIPO);
                    String numero = Convert.ToString(ideq);
                    String numero2 = numero.Trim().PadLeft(5, '0');
                    String idequipo = "EQUIP_" + numero2;
                    EQUIPO equi = new EQUIPO()
                    {
                        IDEQUIPO = idequipo,
                        TIPOEQUIPO = eq.tipoequipo,
                        MARCA = eq.marca,
                        MODELO = eq.modelo,
                        SERIE = eq.serie,
                        ASIGNADO = eq.asignado,
                        ELIMINADO = eq.eliminado,
                        NOMBEQUIPO = eq.nombreequipo,
                        FECHAREGISTRO = DateTime.Now
                    };
                    conexion.EQUIPO.InsertOnSubmit(equi);
                    conexion.SubmitChanges();
                    conexion.increm_ContadorIdEquipo();
                    result = DialogResult.OK;
                }
                catch (Exception)
                {
                    result = DialogResult.Cancel;
                }
            }
            else
            {
                result = DialogResult.No;    
            }
            return result;
        }

        // Verifica la serie del Equipo
        private bool verificar_Serie(string serie)
        {
            bool value = conexion.EQUIPO.Select(x => x.SERIE).Contains(serie);
            return value;
        } 

        internal List<string> listEquipo()
        {  
            var listeq = from e in conexion.EQUIPO
                         select e.TIPOEQUIPO;
            List<string> equipos = listeq.Distinct().ToList<string>();
            return equipos;
        }

        internal List<EQUIPO> listEqSinAsignar(String tipoEquipo)
        {
            List<EQUIPO> lstEq = conexion.EQUIPO.Where(x => x.TIPOEQUIPO==tipoEquipo && x.ELIMINADO == 0 && x.ASIGNADO==0).ToList<EQUIPO>();
            return lstEq;
        }

        internal List<EQUIPO> listEqLiberado(String tipoEquipo)
        {
            List<EQUIPO> lstEq = conexion.EQUIPO.Where(x => x.TIPOEQUIPO == tipoEquipo && x.ELIMINADO == 0 && x.ASIGNADO == 2).ToList<EQUIPO>();
            return lstEq;
        }
       
        internal void cambiaAsignado(string idEq)
        {                     
            EQUIPO eq = conexion.EQUIPO.Single(x => x.IDEQUIPO == idEq);
            eq.ASIGNADO = 2;
            eq.FECHAMODIFICACION = DateTime.Now;
            eq.IDUSUARIO = null;
            conexion.SubmitChanges();            
        }

        internal void cambiaDadobaja(string idEq)
        {
            EQUIPO eq = conexion.EQUIPO.Single(x => x.IDEQUIPO == idEq);
            eq.ASIGNADO = 3;
            eq.IDUSUARIO = null;
            conexion.SubmitChanges();      
        }

        internal void actualizaEquipo(String idEqu, String tipoEqu, String marc, String model, String ser, String nombeq)
        {
            EQUIPO q = conexion.EQUIPO.Single(x => x.IDEQUIPO == idEqu);
            q.IDEQUIPO = idEqu;
            q.TIPOEQUIPO = tipoEqu;
            q.MARCA = marc;
            q.MODELO = model;
            q.SERIE = ser;
            q.NOMBEQUIPO = nombeq;
            q.FECHAMODIFICACION = DateTime.Now;
            conexion.SubmitChanges(); 
        }
    }
}
